import http from './request.js'
import qiniuUploader from "../qiniu/qiniuUploader";

// 获取七牛Token
export function getQNToken() {

  return http.post('user/uploadtk', {});
}

// 七牛配置初始化
// 调用方式：需要通过getQNToken方法获取到token作为参数
export function initQiniu(token) {
  // getQNToken().then(res => {
  //   console.log(res.data.tk)
  //   return function (){
  const options = {
    // bucket所在区域，这里是华北区。ECN, SCN, NCN, NA, ASG，分别对应七牛云的：华东，华南，华北，北美，新加坡 5 个区域
    region: 'ECN',
    uptoken: token,
    // uptokenFunc: function () {
    //   // do something
    //   return qiniuUploadToken;
    // },

    // bucket 外链域名，下载资源时用到。如果设置，会在 success callback 的 res 参数加上可以直接使用的 fileURL 字段。否则需要自己拼接
    domain: 'http://r9yp8y174.hd-bkt.clouddn.com',
    // qiniuShouldUseQiniuFileName 如果是 true，则文件的 key 由 qiniu 服务器分配（全局去重）。如果是 false，则文件的 key 使用微信自动生成的 filename。出于初代sdk用户升级后兼容问题的考虑，默认是 false。
    // 微信自动生成的 filename较长，导致fileURL较长。推荐使用{qiniuShouldUseQiniuFileName: true} + "通过fileURL下载文件时，自定义下载名" 的组合方式。
    // 自定义上传key 需要两个条件：1. 此处shouldUseQiniuFileName值为false。 2. 通过修改qiniuUploader.upload方法传入的options参数，可以进行自定义key。（请不要直接在sdk中修改options参数，修改方法请见demo的index.js）
    // 通过fileURL下载文件时，文件自定义下载名，请参考：七牛云“对象存储 > 产品手册 > 下载资源 > 下载设置 > 自定义资源下载名”（https://developer.qiniu.com/kodo/manual/1659/download-setting）。本sdk在README.md的"常见问题"板块中，有"通过fileURL下载文件时，自定义下载名"使用样例。
    shouldUseQiniuFileName: false
  };
  // 将七牛云相关配置初始化进本sdk
  qiniuUploader.init(options);
  // }
  // })
}

// 从相册选择图片
function chooseImage() {

  return new Promise(function (resolve, reject) {
    wx.chooseImage({
      count: 1,
      sizeType: ['origin'],
      sourceType: ['album'],
      success: (res) => {
        resolve(res)
      },
      fail: (err) => {
        reject(err)
      }

    })
  })
}

// 初始化七牛Api
// 内容：1、getQNToken方法调用 2、initQiniu方法调用
// 调用方式：该方法(异步)执行完才能执行上传文件逻辑(和uploadFileToQiniu配合使用)
export function initQiniuUploadApi() {
  getQNToken().then(res => {
    initQiniu(res.data.tk)
  });
}

// 上传文件到七牛
// filePath：字符串，本地文件地址
export function uploadFileToQiniu(filePath) {
  return new Promise((resolve, reject) => {
    qiniuUploader.upload(filePath, (res) => {
        resolve(res)
      }, (error) => {
        console.error('error: ' + JSON.stringify(error));
        reject('err')
      },
      null,
      (progress) => {
        console.log('上传进度', progress.progress);
        console.log('已经上传的数据长度', progress.totalBytesSent);
        console.log('预期需要上传的数据总长度', progress.totalBytesExpectedToSend);
      }, cancelTask => {}
    );
  })
}
// 上传图片方法
// 内容：1、获取七牛Token 2、初始化七牛配置 3、选择图片 4、上传
export function uploadSingleImg() {
  return new Promise(function (resolve, reject) {

      getQNToken().then(res => {
          initQiniu(res.data.tk)
          return chooseImage()
        })
        // chooseImage()
        .then(res => {
          console.log(res)
          const filePath = res.tempFilePaths[0];
          // wx.chooseImage 目前微信官方尚未开放获取原图片名功能(2020.4.22)
          // 向七牛云上传
          qiniuUploader.upload(filePath, (res) => {
              // that.setData({
              //   'imageObject': res
              // });
              resolve(res)
              // console.log('提示: wx.chooseImage 目前微信官方尚未开放获取原图片名功能(2020.4.22)');
              // console.log('file url is: ' + res.fileURL);
            }, (error) => {
              console.error('error: ' + JSON.stringify(error));
              reject('err')
            },
            // },
            null,
            (progress) => {
              // that.setData({
              //     'imageProgress': progress
              // });
              console.log('上传进度', progress.progress);
              console.log('已经上传的数据长度', progress.totalBytesSent);
              console.log('预期需要上传的数据总长度', progress.totalBytesExpectedToSend);
            }, cancelTask => {

            }
          );
        })
    })
    .catch(err => {
      console.log(err)
      reject('err')
    })
}